Embodiments of the invention generally pertain to systems and methods for designing error-correcting codes used to write and read data on data storage channels. In particular, embodiments of the invention pertain to systems and methods for constructing low-density parity check codes for holographic data storage channels.
As demand for digital data storage capacity increases, data storage systems must continue to store and retrieve data accurately, reliably, and quickly. The accuracy, reliability, and throughput of data storage may decrease due to any number of sources for error—for example, noise or interference present in the data storage channel, defects in a data storage medium, and/or other reasons. Some communication or data storage channels are subject to errors which are dependent on the data symbols being transmitted. In other words, the statistics, such as the mean and variance, of the noise corrupting the signals corresponding to the data symbols are different, or asymmetric. Inevitably, the data stored in data storage systems using such channels is a distorted version of the written data.
Data storage systems often use error-correcting codes to increase data storage accuracy, reliability, and throughput. Error-correcting codes achieve these improvements by encoding data at a transmitter, often during the data writing process, into a set of data symbols. This encoding process adds redundancy, so that the length of the block of data written to the data storage medium is often longer than the amount of originally transmitted data. As mentioned, the channel inevitably introduces noise and/or intersymbol interference and hence the data that is written to the data storage medium needs to be decoded after being read. The decoding is performed by employing an efficient decoding algorithm after the data is read from the data storage medium. This decoding algorithm may be implemented on data processing circuitry, such as a field-programmable gate array (FPGA) or application specific integrated circuit (ASIC).
One error-prone data storage system is a holographic data storage system, which uses a holographic disk as its data storage medium and transmits data over a holographic data storage channel. In certain holographic data storage systems, data is arranged in an array or page of around a million bits. The pages are then organized into chapters and the chapters are organized into books. High data storage densities of up to 320 pages per book have been achieved. These pages are stored within the same three-dimensional disk space, with each page offset from the next one by a very small angle—e.g. 0.067 degrees. In addition, to achieve high storage densities the spacing between the books is minimized—e.g. the spacing of 700 micrometers has been achieved. Further, the holographic data storage channel is often an asymmetric channel.
Due to these and other characteristics of holographic data storage systems, powerful error-correction codes are needed to minimize the system's bit error rate (BER) and/or sector error rate (SER), and maximize the system's signal to noise ratio (SNR). The BER is the ratio of the number of incorrectly decoded data bits versus the total number of transmitted data bits. Similarly, the SER is the ratio of the number of incorrectly decoded sectors/blocks of data bits versus the total number of transmitted sectors/blocks. Finally, the signal to noise ratio is the ratio of signal power to noise power as data is transmitted on a channel, such as a holographic data storage channel.
The accuracy, reliability, and throughput of a holographic data storage system suffers when the SNR is low. Low-density parity check codes are one such error-correcting code that can provide a significant gain in SNR. These codes must be implemented on hardware and tested in order to evaluate their accuracy, reliability, and throughput on particular data storage channels. Thus, there is a continuing interest in constructing low-density parity check codes and accompanying decoders that will provide significant reductions in SNR when implemented on particular data storage channels.